home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / libraries / export / xls.php < prev    next >
PHP Script  |  2004-10-12  |  4KB  |  155 lines

  1. <?php
  2. /* $Id: xls.php,v 2.0 2004/10/13 09:59:56 rabus Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. require_once('Spreadsheet/Excel/Writer.php');
  6.  
  7. /**
  8.  * Set of functions used to build MS Excel dumps of tables
  9.  */
  10.  
  11. /**
  12.  * Outputs comment
  13.  *
  14.  * @param   string      Text of comment
  15.  *
  16.  * @return  bool        Whether it suceeded
  17.  */
  18. function PMA_exportComment($text) {
  19.     return TRUE;
  20. }
  21.  
  22. /**
  23.  * Outputs export footer
  24.  *
  25.  * @return  bool        Whether it suceeded
  26.  *
  27.  * @access  public
  28.  */
  29. function PMA_exportFooter() {
  30.     global $workbook;
  31.     global $tmp_filename;
  32.  
  33.     $res = $workbook->close();
  34.     if (PEAR::isError($res)) {
  35.         echo $res->getMessage();
  36.         return FALSE;
  37.     }
  38.     if (!PMA_exportOutputHandler(file_get_contents($tmp_filename))) return FALSE;
  39.     unlink($tmp_filename);
  40.  
  41.     return TRUE;
  42. }
  43.  
  44. /**
  45.  * Outputs export header
  46.  *
  47.  * @return  bool        Whether it suceeded
  48.  *
  49.  * @access  public
  50.  */
  51. function PMA_exportHeader() {
  52.     global $workbook;
  53.     global $tmp_filename;
  54.  
  55.     if (empty($GLOBALS['cfg']['TempDir'])) return FALSE;
  56.     $tmp_filename = tempnam(realpath($GLOBALS['cfg']['TempDir']), 'pma_xls_');
  57.     $workbook = new Spreadsheet_Excel_Writer($tmp_filename);
  58.  
  59.     return TRUE;
  60. }
  61.  
  62. /**
  63.  * Outputs database header
  64.  *
  65.  * @param   string      Database name
  66.  *
  67.  * @return  bool        Whether it suceeded
  68.  *
  69.  * @access  public
  70.  */
  71. function PMA_exportDBHeader($db) {
  72.     return TRUE;
  73. }
  74.  
  75. /**
  76.  * Outputs database footer
  77.  *
  78.  * @param   string      Database name
  79.  *
  80.  * @return  bool        Whether it suceeded
  81.  *
  82.  * @access  public
  83.  */
  84. function PMA_exportDBFooter($db) {
  85.     return TRUE;
  86. }
  87.  
  88. /**
  89.  * Outputs create database database
  90.  *
  91.  * @param   string      Database name
  92.  *
  93.  * @return  bool        Whether it suceeded
  94.  *
  95.  * @access  public
  96.  */
  97. function PMA_exportDBCreate($db) {
  98.     return TRUE;
  99. }
  100.  
  101. /**
  102.  * Outputs the content of a table in CSV format
  103.  *
  104.  * @param   string      the database name
  105.  * @param   string      the table name
  106.  * @param   string      the end of line sequence
  107.  * @param   string      the url to go back in case of error
  108.  * @param   string      SQL query for obtaining data
  109.  *
  110.  * @return  bool        Whether it suceeded
  111.  *
  112.  * @access  public
  113.  */
  114. function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
  115.     global $what;
  116.     global $workbook;
  117.  
  118.     $worksheet =& $workbook->addWorksheet($table);
  119.     $workbook->setTempDir(realpath($GLOBALS['cfg']['TempDir']));
  120.  
  121.     // Gets the data from the database
  122.     $result      = PMA_DBI_query($sql_query, NULL, PMA_DBI_QUERY_UNBUFFERED);
  123.     $fields_cnt  = PMA_DBI_num_fields($result);
  124.     $col         = 0;
  125.  
  126.     // If required, get fields name at the first line
  127.     if (isset($GLOBALS['xls_shownames']) && $GLOBALS['xls_shownames'] == 'yes') {
  128.         $schema_insert = '';
  129.         for ($i = 0; $i < $fields_cnt; $i++) {
  130.             $worksheet->write(0, $i, stripslashes(PMA_DBI_field_name($result, $i)));
  131.         } // end for
  132.         $col++;
  133.     } // end if
  134.  
  135.     // Format the data
  136.     while ($row = PMA_DBI_fetch_row($result)) {
  137.         $schema_insert = '';
  138.         for ($j = 0; $j < $fields_cnt; $j++) {
  139.             if (!isset($row[$j]) || is_null($row[$j])) {
  140.                 $worksheet->write($col, $j, $GLOBALS['xls_replace_null']);
  141.             } else if ($row[$j] == '0' || $row[$j] != '') {
  142.                 // FIXME: we should somehow handle character set here!
  143.                 $worksheet->write($col, $j, $row[$j]);
  144.             } else {
  145.                 $worksheet->write($col, $j, '');
  146.             }
  147.         } // end for
  148.         $col++;
  149.     } // end while
  150.     PMA_DBI_free_result($result);
  151.  
  152.     return TRUE;
  153. }
  154. ?>
  155.